);
$cdel='';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
- if( $revision->isCurrent() ) {
- // We don't handle top deleted edits too well
- $cdel = wfMsgHtml( 'rev-delundel' );
- } else if( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( $wgUser->isAllowed('deleterevision') || ($revision->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
+ if( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
// If revision was hidden from sysops
$cdel = wfMsgHtml( 'rev-delundel' );
} else {
$cdel = $sk->link(
- $revdel,
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
wfMsgHtml('rev-delundel'),
array(),
array(
global $wgUser;
$permission = ( $rc->mAttribs['rc_deleted'] & Revision::DELETED_RESTRICTED ) == Revision::DELETED_RESTRICTED
? 'suppressrevision'
- : 'deleterevision';
+ : 'deletedrevision';
wfDebug( "Checking for $permission due to $field match on {$rc->mAttribs['rc_deleted']}\n" );
return $wgUser->isAllowed( $permission );
} else {
$wgGroupPermissions['sysop']['delete'] = true;
$wgGroupPermissions['sysop']['bigdelete'] = true; // can be separately configured for pages with > $wgDeleteRevisionsLimit revs
$wgGroupPermissions['sysop']['deletedhistory'] = true; // can view deleted history entries, but not see or restore the text
-$wgGroupPermissions['sysop']['deletedcontent'] = true; // can view deleted content
+$wgGroupPermissions['sysop']['deletedcontent'] = true; // can view deleted revision text
+$wgGroupPermissions['sysop']['deletedrevision'] = true; // can view hidden revision items (user/comment/text)
$wgGroupPermissions['sysop']['undelete'] = true;
$wgGroupPermissions['sysop']['editinterface'] = true;
$wgGroupPermissions['sysop']['editusercss'] = true;
* to ensure that client-side caches do not keep obsolete copies of global
* styles.
*/
-$wgStyleVersion = '240';
+$wgStyleVersion = '241';
# Server-side caching:
$s .= Xml::hidden( 'title', $this->title->getPrefixedDbKey() ) . "\n";
$this->buttons = '<div>';
- if( $wgUser->isAllowed('deleterevision') ) {
+ if( $wgUser->isAllowed('deletedrevision') ) {
$this->buttons .= Xml::element( 'button',
array(
'type' => 'submit',
$s = "($curlink) ($lastlink) $diffButtons";
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ if( $wgUser->isAllowed( 'deletedrevision' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( !$rev->getVisibility() && !$wgUser->isAllowed( 'deleterevision' ) ) {
+ $del = Xml::check( 'deleterevisions', false, array('class' => 'mw-revdelundel-hidden') );
// If revision was hidden from sysops
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ } else if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
$del = Xml::check( 'deleterevisions', false, array('disabled' => 'disabled') );
// Otherwise, show the link...
} else {
. $navLinks . "\n"
. Xml::openElement( 'table', array( 'class' => 'wikitable filehistory' ) ) . "\n"
. '<tr><td></td>'
- . ( $this->current->isLocal() && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deleterevision') ) ? '<td></td>' : '' )
+ . ( $this->current->isLocal() && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deletedrevision') ) ? '<td></td>' : '' )
. '<th>' . wfMsgHtml( 'filehist-datetime' ) . '</th>'
. ( $this->showThumb ? '<th>' . wfMsgHtml( 'filehist-thumb' ) . '</th>' : '' )
. '<th>' . wfMsgHtml( 'filehist-dimensions' ) . '</th>'
$row = $css = $selected = '';
// Deletion link
- if( $local && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deleterevision') ) ) {
+ if( $local && ($wgUser->isAllowed('delete') || $wgUser->isAllowed('deletedrevision') ) ) {
$row .= '<td>';
# Link to remove from history
if( $wgUser->isAllowed( 'delete' ) ) {
array(), $q, array( 'known' )
);
}
- # Link to hide content
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ # Link to hide content. Don't show useless link to people who cannot hide revisions.
+ if( $wgUser->isAllowed('deleterevision') || ($wgUser->isAllowed('deletedrevision') && $file->getVisibility()) ) {
if( $wgUser->isAllowed('delete') ) {
$row .= '<br/>';
}
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
// If file is top revision or locked from this user, don't link
if( $iscur || !$file->userCan(File::DELETED_RESTRICTED) ) {
$del = wfMsgHtml( 'rev-delundel' );
} else {
list( $ts, $name ) = explode( '!', $img, 2 );
- $del = $this->skin->link( $revdel, wfMsgHtml( 'rev-delundel' ),
+ $del = $this->skin->link(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ wfMsgHtml( 'rev-delundel' ),
array(),
array(
'type' => 'oldimage',
$paramArray = LogPage::extractParams( $row->log_params );
$revert = $del = '';
// Some user can hide log items and have review links
- if( !($this->flags & self::NO_ACTION_LINK) && $wgUser->isAllowed( 'deleterevision' ) ) {
- $del = $this->getShowHideLinks( $row ) . ' ';
+ if( !($this->flags & self::NO_ACTION_LINK) && $wgUser->isAllowed( 'deletedrevision' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
+ $del = $this->getShowHideLinks( $row ) . ' ';
+ }
}
// Add review links and such...
if( ($this->flags & self::NO_ACTION_LINK) || ($row->log_deleted & LogPage::DELETED_ACTION) ) {
array( 'known', 'noclasses' )
) . ')';
// If an edit was hidden from a page give a review link to the history
- } else if( self::typeAction($row,array('delete','suppress'),'revision','deleterevision') ) {
+ } else if( self::typeAction($row,array('delete','suppress'),'revision','deletedrevision') ) {
if( count($paramArray) >= 2 ) {
// Different revision types use different URL params...
$key = $paramArray[0];
$revert = wfMsg( 'parentheses', $wgLang->pipeList( $revert ) );
}
// Hidden log items, give review link
- } else if( self::typeAction($row,array('delete','suppress'),'event','deleterevision') ) {
+ } else if( self::typeAction($row,array('delete','suppress'),'event','deletedrevision') ) {
if( count($paramArray) >= 1 ) {
$revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
// $paramArray[1] is a CSV of the IDs
global $wgUser;
$permission = ( $row->log_deleted & LogPage::DELETED_RESTRICTED ) == LogPage::DELETED_RESTRICTED
? 'suppressrevision'
- : 'deleterevision';
+ : 'deletedrevision';
wfDebug( "Checking for $permission due to $field match on $row->log_deleted\n" );
return $wgUser->isAllowed( $permission );
} else {
global $wgUser;
$this->mConds['log_user'] = $userid;
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$wgUser->isAllowed( 'deletedrevision' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::DELETED_USER) . ' = 0';
} else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::SUPPRESSED_USER) .
$this->mConds['log_title'] = $title->getDBkey();
}
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$wgUser->isAllowed( 'deletedrevision' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::DELETED_ACTION) . ' = 0';
} else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::SUPPRESSED_ACTION) .
global $wgUser;
$permission = ( $this->mDeleted & self::DELETED_RESTRICTED ) == self::DELETED_RESTRICTED
? 'suppressrevision'
- : 'deleterevision';
+ : 'deletedrevision';
wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
return $wgUser->isAllowed( $permission );
} else {
'delete',
'deletedhistory',
'deletedcontent',
+ 'deletedrevision',
'deleterevision',
'edit',
'editinterface',
}
$rdel = ''; $ldel = '';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
- if( !$this->mOldRev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $ldel = Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ), '(' . wfMsgHtml( 'rev-delundel' ) . ')' );
- } else {
- $query = array(
- 'type' => 'revision',
- 'target' => $this->mOldRev->mTitle->getPrefixedDbkey(),
- 'ids' => $this->mOldRev->getId()
- );
- $ldel = $sk->revDeleteLink( $query, $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) );
+ if( $wgUser->isAllowed( 'deletedrevision' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( $this->mOldRev->getVisibility() || $wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$this->mOldRev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ // If revision was hidden from sysops
+ $ldel = Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ),
+ '(' . wfMsgHtml( 'rev-delundel' ) . ')' );
+ } else {
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $this->mOldRev->mTitle->getPrefixedDbkey(),
+ 'ids' => $this->mOldRev->getId()
+ );
+ $ldel = $sk->revDeleteLink( $query, $this->mOldRev->isDeleted( Revision::DELETED_RESTRICTED ) );
+ }
+ $ldel = " $ldel ";
}
- $ldel = " $ldel ";
- if( !$this->mNewRev->userCan( Revision::DELETED_RESTRICTED ) ) {
- // If revision was hidden from sysops
- $rdel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' );
- } else {
- $query = array(
- 'type' => 'revision',
- 'target' => $this->mNewRev->mTitle->getPrefixedDbkey(),
- 'ids' => $this->mNewRev->getId()
- );
- $rdel = $sk->revDeleteLink( $query, $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) );
+ // Don't show useless link to people who cannot hide revisions
+ if( $this->mNewRev->getVisibility() || $wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$this->mNewRev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ // If revision was hidden from sysops
+ $rdel = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml( 'rev-delundel' ).')' );
+ } else {
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $this->mNewRev->mTitle->getPrefixedDbkey(),
+ 'ids' => $this->mNewRev->getId()
+ );
+ $rdel = $sk->revDeleteLink( $query, $this->mNewRev->isDeleted( Revision::DELETED_RESTRICTED ) );
+ }
+ $rdel = " $rdel ";
}
- $rdel = " $rdel ";
}
$oldHeader = '<div id="mw-diff-otitle1"><strong>'.$this->mOldtitle.'</strong></div>' .
global $wgUser;
$permission = ( $this->deleted & File::DELETED_RESTRICTED ) == File::DELETED_RESTRICTED
? 'suppressrevision'
- : 'deleterevision';
+ : 'deletedrevision';
wfDebug( "Checking for $permission due to $field match on $this->deleted\n" );
return $wgUser->isAllowed( $permission );
} else {
global $wgUser;
$permission = ( $this->deleted & File::DELETED_RESTRICTED ) == File::DELETED_RESTRICTED
? 'suppressrevision'
- : 'deleterevision';
+ : 'deletedrevision';
wfDebug( "Checking for $permission due to $field match on $this->mDeleted\n" );
return $wgUser->isAllowed( $permission );
} else {
$conds = array_merge( $userCond, $this->getNamespaceCond() );
// Paranoia: avoid brute force searches (bug 17342)
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$wgUser->isAllowed( 'deletedrevision' ) ) {
$conds[] = $this->mDb->bitAnd('rev_deleted',Revision::DELETED_USER) . ' = 0';
} else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$conds[] = $this->mDb->bitAnd('rev_deleted',Revision::SUPPRESSED_USER) .
$mflag = '';
}
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
// If revision was hidden from sysops
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
$del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
list( $index, $userCond ) = $this->getUserCond();
$conds = array_merge( $userCond, $this->getNamespaceCond() );
// Paranoia: avoid brute force searches (bug 17792)
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
+ if( !$wgUser->isAllowed( 'deletedrevision' ) ) {
$conds[] = $this->mDb->bitAnd('ar_deleted',Revision::DELETED_USER) . ' = 0';
} else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$conds[] = $this->mDb->bitAnd('ar_deleted',Revision::SUPPRESSED_USER) .
} else {
$mflag = '';
}
-
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+
+ // Don't show useless link to people who cannot hide revisions
+ if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
// If revision was hidden from sysops
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
$del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
);
public function __construct() {
- parent::__construct( 'Revisiondelete', 'deleterevision' );
+ parent::__construct( 'Revisiondelete', 'deletedrevision' );
}
public function execute( $par ) {
global $wgOut, $wgUser, $wgRequest;
- if( !$wgUser->isAllowed( 'deleterevision' ) ) {
- $wgOut->permissionRequired( 'deleterevision' );
+ if( !$wgUser->isAllowed( 'deletedrevision' ) ) {
+ $wgOut->permissionRequired( 'deletedrevision' );
return;
} else if( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
+ $this->mIsAllowed = $wgUser->isAllowed('deleterevision'); // for changes
$this->skin = $wgUser->getSkin();
$this->setHeaders();
$this->outputHeader();
}
# Either submit or create our form
- if( $this->submitClicked ) {
+ if( $this->mIsAllowed && $this->submitClicked ) {
$this->submit( $wgRequest );
} else {
$this->showForm();
// Normal sysops can always see what they did, but can't always change it
if( !$UserAllowed ) return;
- $out = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
- 'id' => 'mw-revdel-form-revisions' ) ) .
- Xml::fieldset( wfMsg( 'revdelete-legend' ) ) .
- $this->buildCheckBoxes( $bitfields ) .
- Xml::openElement( 'table' ) .
- "<tr>\n" .
- '<td class="mw-label">' .
- Xml::label( wfMsg( 'revdelete-log' ), 'wpRevDeleteReasonList' ) .
- '</td>' .
- '<td class="mw-input">' .
- Xml::listDropDown( 'wpRevDeleteReasonList',
- wfMsgForContent( 'revdelete-reason-dropdown' ),
- wfMsgForContent( 'revdelete-reasonotherlist' ), '', 'wpReasonDropDown', 1
- ) .
- '</td>' .
- "</tr><tr>\n" .
- '<td class="mw-label">' .
- Xml::label( wfMsg( 'revdelete-otherreason' ), 'wpReason' ) .
- '</td>' .
- '<td class="mw-input">' .
- Xml::input( 'wpReason', 60, $this->otherReason, array( 'id' => 'wpReason' ) ) .
- '</td>' .
- "</tr><tr>\n" .
- '<td></td>' .
- '<td class="mw-submit">' .
- Xml::submitButton( wfMsg( 'revdelete-submit' ), array( 'name' => 'wpSubmit' ) ) .
- '</td>' .
- "</tr>\n" .
- Xml::closeElement( 'table' ) .
- Xml::hidden( 'wpEditToken', $wgUser->editToken() ) .
- Xml::hidden( 'target', $this->targetObj->getPrefixedText() ) .
- Xml::hidden( 'type', $this->typeName ) .
- Xml::hidden( 'ids', implode( ',', $this->ids ) ) .
- Xml::closeElement( 'fieldset' ) . "\n";
-
+ // Show form if the user can submit
+ if( $this->mIsAllowed ) {
+ $out = Xml::openElement( 'form', array( 'method' => 'post',
+ 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
+ 'id' => 'mw-revdel-form-revisions' ) ) .
+ Xml::fieldset( wfMsg( 'revdelete-legend' ) ) .
+ $this->buildCheckBoxes( $bitfields ) .
+ Xml::openElement( 'table' ) .
+ "<tr>\n" .
+ '<td class="mw-label">' .
+ Xml::label( wfMsg( 'revdelete-log' ), 'wpRevDeleteReasonList' ) .
+ '</td>' .
+ '<td class="mw-input">' .
+ Xml::listDropDown( 'wpRevDeleteReasonList',
+ wfMsgForContent( 'revdelete-reason-dropdown' ),
+ wfMsgForContent( 'revdelete-reasonotherlist' ), '', 'wpReasonDropDown', 1
+ ) .
+ '</td>' .
+ "</tr><tr>\n" .
+ '<td class="mw-label">' .
+ Xml::label( wfMsg( 'revdelete-otherreason' ), 'wpReason' ) .
+ '</td>' .
+ '<td class="mw-input">' .
+ Xml::input( 'wpReason', 60, $this->otherReason, array( 'id' => 'wpReason' ) ) .
+ '</td>' .
+ "</tr><tr>\n" .
+ '<td></td>' .
+ '<td class="mw-submit">' .
+ Xml::submitButton( wfMsg( 'revdelete-submit' ), array( 'name' => 'wpSubmit' ) ) .
+ '</td>' .
+ "</tr>\n" .
+ Xml::closeElement( 'table' ) .
+ Xml::hidden( 'wpEditToken', $wgUser->editToken() ) .
+ Xml::hidden( 'target', $this->targetObj->getPrefixedText() ) .
+ Xml::hidden( 'type', $this->typeName ) .
+ Xml::hidden( 'ids', implode( ',', $this->ids ) ) .
+ Xml::closeElement( 'fieldset' ) . "\n";
+ } else {
+ $out = '';
+ }
+ // Show link to edit the dropdown reasons
if( $wgUser->isAllowed( 'editinterface' ) ) {
$title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
$link = $wgUser->getSkin()->link(
);
$out .= Xml::tags( 'p', array( 'class' => 'mw-revdel-editreasons' ), $link ) . "\n";
}
- $out .= Xml::closeElement( 'form' ) . "\n";
-
+ if( $this->mIsAllowed ) {
+ $out .= Xml::closeElement( 'form' ) . "\n";
+ }
$wgOut->addHTML( $out );
}
$revdlink = '';
// Diffs already have revision delete links
- if( !$this->mDiff && $wgUser->isAllowed( 'deleterevision' ) ) {
- if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) {
+ if( !$this->mDiff && $wgUser->isAllowed( 'deletedrevision' ) ) {
+ // Don't show useless link to people who cannot hide revisions
+ if( !$rev->getVisibility() && !$wgUser->isAllowed( 'deleterevision' ) ) {
+ $revdlink = '';
// If revision was hidden from sysops
+ } else if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) {
$revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
'('.wfMsgHtml('rev-delundel').')' );
} else {
$targetPage = $rev->getTitle();
$targetQuery = array( 'oldid' => $rev->getId() );
}
- // Add show/hide link if available
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Add show/hide link if available. Don't show useless link to people who cannot hide revisions.
+ if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
// If revision was hidden from sysops
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
$del = ' ' . Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
}
// Edit summary
$comment = $sk->revComment( $rev );
- // Show/hide link
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Show/hide link. // Don't show useless link to people who cannot hide revisions.
+ if( $wgUser->isAllowed('deleterevision') || ($rev->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
// If revision was hidden from sysops
$revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ),
$data = htmlspecialchars( $data );
$comment = $this->getFileComment( $file, $sk );
$revdlink = '';
- if( $wgUser->isAllowed( 'deleterevision' ) ) {
+ // Add show/hide link if available. Don't show useless link to people who cannot hide revisions.
+ if( $wgUser->isAllowed('deleterevision') || ($file->getVisibility() && $wgUser->isAllowed('deletedrevision')) ) {
if( !$file->userCan(File::DELETED_RESTRICTED ) ) {
// If revision was hidden from sysops
$revdlink = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), '('.wfMsgHtml('rev-delundel').')' );
strong.mw-revdelundel-link {
font-size: 90%;
}
+span.mw-revdelundel-hidden,
+input.mw-revdelundel-hidden {
+ visibility: hidden;
+}
/* feed links */
a.feedlink {